#! /usr/bin/env python

# Copyright 2018 Google Inc.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import argparse
import os
import sys

import skqp_gn_args

def parse_args():
    parser = argparse.ArgumentParser(description='Generate args.gn file.')
    parser.add_argument('target_build_dir')
    parser.add_argument('android_ndk_dir' )
    parser.add_argument('--arch',  metavar='architecture', default='arm',
        help='defaults to "arm", valid values: "arm" "arm64" "x86" "x64"')
    parser.add_argument('--api_level', type=int, metavar='api_level',
        default=26, help='android API level, defaults to 26')
    parser.add_argument('--debug', default=False, action='store_true',
        help='compile native code in debug mode, defaults to false')
    args = parser.parse_args()
    result = skqp_gn_args.GetGNArgs(args.arch,
                                    os.path.abspath(args.android_ndk_dir),
                                    args.debug,
                                    args.api_level)
    return args.target_build_dir, result)

def write_gn(o, args):
    l = max(len(k) for k in args)
    for k, v in sorted(args.items()):
        o.write('%-*s = %s\n' % (l, k, v))

def make_args_gn(out_dir, args):
    if out_dir == '-':
        write_gn(sys.stdout, args)
        return
    if not os.path.exists(out_dir):
        os.makedirs(out_dir)
    with open(os.path.join(out_dir, 'args.gn'), 'w') as o:
        write_gn(o, args)

if __name__ == '__main__':
    build_dir, args = parse_args()
    make_args_gn(build_dir, args)
